﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Scribe4net
{
    public interface ISerializationWriter
    {
        int IndentationLevel { get; set; }

        void Start(string objectName, bool isList);
        void ListStart(string listObjectName, int dept, bool oneLiner);
        void ListEnd(string listObjectName, int dept);
        void ListItemStart(string listItemObjectName, int dept, bool oneLiner);
        void ListItemEnd(string listItemObjectName, int dept, bool oneLiner);

        void DictStart(string dictObjectName, int dept, bool oneLiner);
        void DictEnd(string dictObjectName, int dept);
        void DictItemStart(string dictItemObjectName, int dept, bool oneLiner);
        void DictItemEnd(string dictItemObjectName, int dept);

        void ObjectStart(string objectName, int dept, bool oneLiner);
        void ObjectEnd(string objectName, int dept);

        void AppendPrimitiveValue(object valueToAppend, int dept);
        void AppendNullValue(string name, int dept, bool inList);
        void End(string objectName);

        string GetString();
    }
}
